package com.bcbim.smart_water.pipeManagement.mapper;

import com.bcbim.smart_water_interface.line.VO.PipelineVO;
import com.bcbim.smart_water_interface.pipeManagement.dto.AddLineInSetDTO;
import com.bcbim.smart_water_interface.pipeManagement.dto.AddPointSetDTO;
import com.bcbim.smart_water_interface.pipeManagement.dto.PipelineFrameSelectInput;
import com.bcbim.smart_water_interface.pipeManagement.vo.PipeLineListUseWaterVO;
import com.bcbim.smart_water_interface.pipeManagement.vo.PipeLineListVO;
import com.bcbim.smart_water_interface.pipeManagement.vo.PipeListVO;
import com.bcbim.smart_water_interface.pipeManagement.vo.PipePointListVO;
import com.bcbim.smart_water_interface.pipeline.VO.PipelineLineModelListVO;
import com.bcbim.smart_water_interface.pipeline.VO.PipelinePointModelListVO;
import com.bcbim.smart_water_interface.point.VO.PipePointVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description: 管网管理mapper接口
 * @Author haoshuai
 * @Date 2021/8/19
 * @Version V1.0
 **/
@Mapper
public interface PipeManagementMapper {

    /**
     * @Description: 查询管线列表不含分页
     * @Param: code 管线编号(模糊检索)
     * @Param: roadId 道路id
     * @Param: uses 用途码值
     * @Param: pipeDiameterMin 管径范围(最小)
     * @Param: pipeDiameterMax 管径范围(最大)
     * @Param: buryType 埋设方式
     * @Param: material 材质
     * @Return: List<listLineVO>
     * @Author: haoshuai
     * @Date: 2021/8/19
     */
    List<PipeListVO> listLineNoPaging(AddLineInSetDTO params);

    /**
     * 查询管点列表不含分页
     *
     * @param params 前端传入管点加入选集参数
     * @param: roadId 道路id
     * @param: uses 用途
     * @param: feature 特征
     * @param: attachmen 附属
     * @param: startBury 开始井底深
     * @param: endBury 结束井底深
     * @param: startHigh 起始高程
     * @param: endHigh 结束高程
     * @return: com.bcbim.common.response.vo.ReturnPageMsg
     * @author wxc
     * @date 2021/8/25  11:11
     */
    List<PipeListVO> pointNoPaging(AddPointSetDTO params);

    /**
     * 全部管点模型数据
     *
     * @return java.util.List<com.bcbim.pipeline_interface.pipeline.VO.PipelinePointModelListVO>
     * @author wxc
     * @date 2021/8/27  16:41
     */
    List<PipelinePointModelListVO> getAllPoint();

    /**
     * 全部管线模型数据
     *
     * @return java.util.List<com.bcbim.pipeline_interface.pipeline.VO.PipelinePointModelListVO>
     * @author wxc
     * @date 2021/8/27  16:41
     */
    List<PipelineLineModelListVO> getAllLine();

    /***
     * 查询存放到redis中的管点数据列表（未分页）
     *
     * @param params 查询参数
     * @param: roadId 道路id
     * @param: uses 用途
     * @param: feature 特征
     * @param: attachmen 附属
     * @param: startBury 开始井底深
     * @param: endBury 结束井底深
     * @param: startHigh 起始高程
     * @param: endHigh 结束高程
     * @return java.util.List<com.bcbim.pipeline_interface.pipeManagement.vo.PipePointListVO>
     * @author wxc
     * @date 2021/8/30  10:43
     */
    List<PipePointListVO> listPointNoLimit(AddPointSetDTO params);

    /**
     * 查询存放到redis中的管线数据列表（未分页）
     *
     * @param params 查询参数
     * @return List<PipeLineListVO>
     * @Param: code 管线编号(模糊检索)
     * @Param: roadId 道路id
     * @Param: uses 用途码值
     * @Param: pipeDiameterMin 管径范围(最小)
     * @Param: pipeDiameterMax 管径范围(最大)
     * @Param: buryType 埋设方式
     * @Param: material 材质
     * @author wxc
     * @date 2021/8/30
     */
    List<PipeLineListVO> listLineNoLimit(AddLineInSetDTO params);

    /**
     * 通过管线id集合查询数据,用于显示水波流向
     *
     * @param lineIdList 集选管线id集合
     * @return java.util.List<com.bcbim.pipeline_interface.pipeManagement.vo.PipeLineListUseWaterVO>
     * @author wxc
     * @date 2021/9/2  16:39
     */
    List<PipeLineListUseWaterVO> listPipeLineUseWater(@Param("list") List<String> lineIdList);

    /**
     * 通过框选位置添加管点集选
     *
     * @param pipelineFrameSelectInput 框选位置
     * @return java.util.List<com.bcbim.pipeline_interface.pipeManagement.vo.PipeListVO>
     * @author wxc
     * @date 2021/10/11
     */
    List<PipeListVO> listPointByCodes(PipelineFrameSelectInput pipelineFrameSelectInput);

    /**
     * 通过框选位置添加管线集选
     *
     * @param pipelineFrameSelectInput 框选位置
     * @return java.util.List<com.bcbim.pipeline_interface.pipeManagement.vo.PipeListVO>
     * @author wxc
     * @date 2021/10/11
     */
    List<PipeListVO> listLineByCodes(PipelineFrameSelectInput pipelineFrameSelectInput);


    List<PipelineVO> listPipelineByPointIds(@Param("pointIds") String[] pointIds);

    List<PipePointVO> listPipePointByPointIds(@Param("pointIds") String[] pointIds);
}
